package org.luxor.commons.selenium.listener;

import org.luxor.commons.selenium.component.Context;
import org.luxor.commons.selenium.component.SeleniumDriver;
import org.luxor.commons.selenium.component.command.SeleniumCommand;
import org.openqa.selenium.support.events.WebDriverEventListener;

/**
 * Selenium 事件监听器接口
 *
 * @author Mr.yan @date 2022/10/24
 */
public interface SeleniumEventListener extends WebDriverEventListener {

    /**
     * 扩展方法：初始化指令之前
     *
     * @param command   业务指令
     * @param context   业务上下文
     * @return void
     */
    void init(SeleniumCommand command, Context context);

    /**
     * 扩展方法：指令执行之前
     *
     * @param webDriver 驱动器
     * @param command   业务指令
     * @param context   业务上下文
     * @return void
     */
    void beforeExecute(SeleniumDriver webDriver, SeleniumCommand command, Context context);

    /**
     * 扩展方法：指令执行之后
     *
     * @param webDriver 驱动器
     * @param command   业务指令
     * @param context   业务上下文
     * @return void
     */
    void afterExecute(SeleniumDriver webDriver, SeleniumCommand command, Context context);

}
